
Nombre:
MP3 Wolf
Versión:
1.04
Editor:
Trellian
Víctima:
MWOLF32.EXE
Herramientas:
W32Dasm
SoftICE
Cerebro
Cracker:
LW2000
Tutorial:
número 26
URL:
http://www.trellian.com/mwolf
Renuncia: Este tutorial tiene una finalidad únicamente
educativa. No asumo ninguna responsabilidad por el mal uso de éste material.
1.
Vamos a la pantalla de registro e introducimos
los detalles; ‘LW2000’ como Registration name y ‘1230099’ como Serial Number.
2.
¡Boooom! Obtenemos un mensaje de error
que nos indica que nuestro Code no es el correcto. ¿Qué demonios es esto?
¡Parece que hemos encontrado un ‘bug’ ..! ¡Vamos a corregirlo!
3.
Cargamos W32Dasm con ‘MWOLF32.EXE’ y
hacemos click en la String Data References. Vamos a nuestra cadena. Bien,
deberíamos estar aquí:
:00403541 E8DC9D0000 call 0040D322 >Nuestra rutina de
>comprobación
:00403546 59
pop ecx
:00403547 85C0
test eax, eax
:00403549 59
pop ecx
:0040354A 7518
jne 00403564 >Comprobación
:0040354C 6A30
push 00000030
* Possible StringData Ref from Data Obj ->"Invalid
Registration"
|
:0040354E 68245B4100 push 00415B24
* Possible StringData Ref from Data Obj ->
"Invalid Registration Name or Serial "
4.
Para ver desde donde se llama a nuestro
mensaje de error, nos desplazamos un poco hacia arriva. En ‘CALL 0040D322’
nuestro Serial falso se compara con el correcto. Si son diferentes EAX = 0,
en caso contrario EAX = 1.
5.
¡Hmmm! Bien, salimos de W32Dasm y arrancamos
SoftICE. Vamos a la pantalla de registro e introducimos ‘LW2000’ como Registration
Name y ‘1230099’ como Serial Number.
6.
Pulsamos Ctrl-D para cambiarnos a SoftICE
y escribimos “BPX HMEMCPY”. Pulsamos F5 para volver a nuestra aplicación.
Pulsamos el botón ‘Ok’.
7.
¡Boooom! SoftICE aparecerá. Pulsamos
F11 para ir a la instrucción que realizó la llamada. Ahora pulsamos F12 hasta
que lleguemos al código del programa.
8.
Escribimos “BC *” y después ponemos un
breakpoint en ‘0040D322’. Pulsamos F5 y ¡booom! Ahora estaremos aquí:
:0040D322 55
push ebp
:0040D323 8BEC
mov ebp, esp
:0040D325 83EC30
sub esp, 00000030
:0040D328 8B450C
mov eax, dword ptr [ebp+0C]
:0040D32B 53
push ebx
:0040D32C 56
push esi
:0040D32D 57
push edi
:0040D32E 85C0
test eax, eax
:0040D330 0F840F010000 je 0040D445
:0040D336 8B5D08
mov ebx, dword ptr [ebp+08]
:0040D339 85DB
test ebx, ebx
:0040D33B 0F8404010000 je 0040D445
:0040D341 80384D
cmp byte ptr [eax], 4D >Primer carácter igual
>a ‘4D’ (‘M’)
:0040D344 0F85FB000000 jne 0040D445
:0040D34A 80780157
cmp byte ptr [eax+01], 57 >Segundo carácter
>igual a ‘57’
>(‘W’)
:0040D34E 0F85F1000000 jne 0040D445
:0040D354 6A13
push 00000013
:0040D356 50
push eax
:0040D357 8D45E4
lea eax, dword ptr [ebp-1C]
:0040D35A 50
push eax
:0040D35B E849A1FFFF call 004074A9
:0040D360 83C40C
add esp, 0000000C
:0040D363 8D45E4
lea eax, dword ptr [ebp-1C]
:0040D366 6A2D
push 0000002D >Tercer carácter igual a ‘2D’
>(‘-‘)
:0040D368 50
push eax
:0040D369 E8120D0000 call 0040E080
:0040D36E 8BF0
mov esi, eax
:0040D370 59
pop ecx
:0040D371 85F6
test esi, esi
:0040D373 59
pop ecx
:0040D374 89750C
mov dword ptr [ebp+0C], esi
:0040D377 0F84C8000000 je 0040D445
>¿El tercer carácter es igual a
>‘2D’ (‘-‘)?
:0040D37D 802600
and byte ptr [esi], 00
:0040D380 8D45F8
lea eax, dword ptr [ebp-08]
9.
Si esto no se cumple nuestra ‘criaturita’
saltará a ‘0040D445’. Aquí veremos esto:
:0040D445 33C0
xor eax, eax >EAX = 0
* Referenced by a (U)nconditional or (C)onditional
Jump at Address:
|:0040D443(U)
|
:0040D447 5F
pop edi
:0040D448 5E
pop esi
:0040D449 5B
pop ebx
:0040D44A C9
leave
:0040D44B C3
ret
>RETorna con EAX = 0
10.
Bien, no queremos que la comprobación falle … Vamos a introducir
un Serial. Después traceamos el código de nuevo … Después, veremos esto:
:0040D41E 68F47A4100 push 00417AF4
:0040D423 8D45D0
lea eax, dword ptr [ebp-30]
:0040D426 6A14
push 00000014
:0040D428 50
push eax
:0040D429 E872040000 call 0040D8A0
:0040D42E 83C410
add esp, 00000010
:0040D431 46
inc esi
:0040D432 8D45D0
lea eax, dword ptr [ebp-30] >”D EAX”
11.
Bien, vemos un número pero, ¿qué podemos hacer con él? ¡Hmmm, tomanos
la cadena “MW-“ y después la finalizamos con el nuevo número que nos hemos
encontrado.
12.
Probamos a registrarnos nuevamente
¡Enhorabuena! ¡Ya es un usuario registrado!
¡Se acabó! Fácil, ¿no? ¿Algún comentario? Envíeme
un email a LW2000@gmx.net.
o vaya a http://www.LW2000.cjb.net
Gracias a tKC por sus tutoriales. Empecé leyendo su
primer tutorial y todavía sigo leyéndolos.
Traducción de: MeGaBiTe